import { fileURLToPath, URL } from 'node:url'

import { defineConfig,loadEnv  } from 'vite'
import vue from '@vitejs/plugin-vue'
import vueJsx from '@vitejs/plugin-vue-jsx'
// 获取当前环境的配置
// https://vitejs.dev/config/
export default defineConfig(({command:any,mode})=>{
  const config = loadEnv(mode, './')

  return {
    plugins: [
      vue(),
      vueJsx(),
    ],
    // 是否自动在浏览器打开
    open: true,
    // 是否开启 https
    https: false,
    // 服务端渲染
    ssr: false,
    /**
     * 在生产中服务时的基本公共路径。
     * @default '/'
     */
    base: './',
    /**
     * 与“根”相关的目录，构建输出将放在其中。如果目录存在，它将在构建之前被删除。
     * @default 'dist'
     */
    outDir: 'dist',
    resolve: {
      alias: {
        '@': fileURLToPath(new URL('./src', import.meta.url))
      }
    },
     // 打包配置
     build: {
      target: 'modules',
      outDir: 'dist', //指定输出路径
      assetsDir: 'assets', // 指定生成静态资源的存放路径
      minify: 'terser', // 混淆器，terser构建后文件体积更小
      terserOptions: {
        compress: {
          keep_infinity: true,  // 防止 Infinity 被压缩成 1/0，这可能会导致 Chrome 上的性能问题
          drop_console: true,   // 生产环境去除 console
          drop_debugger: true   // 生产环境去除 debugger
        },
      },
    },
    publicPath: process.env.NODE_ENV === "production" ? "./" : "/",
    // 本地运行配置，及反向代理配置
    server: {
      port: 8089,
      host: "0.0.0.0",
      // 是否开启 https
      https: false,
      cors: true, // 默认启用并允许任何源
      open: true, // 在服务器启动时自动在浏览器中打开应用程序
      //反向代理配置，注意rewrite写法，开始没看文档在这里踩了坑
      proxy: {
        '/api': {
          'target':  config.VITE_BASIC_API, 
          changeOrigin: true,
          rewrite: (path) => path.replace( '^/api', ''),
        },
      },
    },
  }
})
